diff --git a/src/webui/public/assets/alpine.svg b/src/webui/public/assets/alpine.svg new file mode 100644 index 0000000..1ac41d7 --- /dev/null +++ b/src/webui/public/assets/alpine.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/webui/public/assets/amazon.svg b/src/webui/public/assets/amazon.svg new file mode 100644 index 0000000..9de72ca --- /dev/null +++ b/src/webui/public/assets/amazon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/webui/public/assets/arch.svg b/src/webui/public/assets/arch.svg new file mode 100644 index 0000000..ba92fc3 --- /dev/null +++ b/src/webui/public/assets/arch.svg @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/src/webui/public/assets/centos.svg b/src/webui/public/assets/centos.svg new file mode 100644 index 0000000..cb07aec --- /dev/null +++ b/src/webui/public/assets/centos.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/webui/public/assets/debian.svg b/src/webui/public/assets/debian.svg new file mode 100644 index 0000000..9cfc78e --- /dev/null +++ b/src/webui/public/assets/debian.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/webui/public/assets/fedora.svg b/src/webui/public/assets/fedora.svg new file mode 100644 index 0000000..e227311 --- /dev/null +++ b/src/webui/public/assets/fedora.svg @@ -0,0 +1,16 @@ + + + + + + + diff --git a/src/webui/public/assets/freebsd.svg b/src/webui/public/assets/freebsd.svg new file mode 100644 index 0000000..67754c4 --- /dev/null +++ b/src/webui/public/assets/freebsd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/webui/public/assets/linux.svg b/src/webui/public/assets/linux.svg new file mode 100644 index 0000000..d53b55c --- /dev/null +++ b/src/webui/public/assets/linux.svg @@ -0,0 +1,1723 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/webui/public/assets/macos.svg b/src/webui/public/assets/macos.svg new file mode 100644 index 0000000..c82bcda --- /dev/null +++ b/src/webui/public/assets/macos.svg @@ -0,0 +1,17 @@ + + + + + diff --git a/src/webui/public/assets/nixos.svg b/src/webui/public/assets/nixos.svg new file mode 100644 index 0000000..ccf6010 --- /dev/null +++ b/src/webui/public/assets/nixos.svg @@ -0,0 +1,2 @@ + +file_type_nix \ No newline at end of file diff --git a/src/webui/public/assets/openbsd.svg b/src/webui/public/assets/openbsd.svg new file mode 100644 index 0000000..7254adf --- /dev/null +++ b/src/webui/public/assets/openbsd.svg @@ -0,0 +1,2 @@ + +OpenBSD icon \ No newline at end of file diff --git a/src/webui/public/assets/oraclelinux.svg b/src/webui/public/assets/oraclelinux.svg new file mode 100644 index 0000000..0dd3a9f --- /dev/null +++ b/src/webui/public/assets/oraclelinux.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/webui/public/assets/pop.svg b/src/webui/public/assets/pop.svg new file mode 100644 index 0000000..e53144b --- /dev/null +++ b/src/webui/public/assets/pop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/webui/public/assets/raspbian.svg b/src/webui/public/assets/raspbian.svg new file mode 100644 index 0000000..e288179 --- /dev/null +++ b/src/webui/public/assets/raspbian.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/webui/public/assets/redhat.svg b/src/webui/public/assets/redhat.svg new file mode 100644 index 0000000..df10b55 --- /dev/null +++ b/src/webui/public/assets/redhat.svg @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/src/webui/public/assets/ubuntu.svg b/src/webui/public/assets/ubuntu.svg new file mode 100644 index 0000000..2e74f42 --- /dev/null +++ b/src/webui/public/assets/ubuntu.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/webui/public/assets/unknown.svg b/src/webui/public/assets/unknown.svg new file mode 100644 index 0000000..144f084 --- /dev/null +++ b/src/webui/public/assets/unknown.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/webui/src/components/react/servers.tsx b/src/webui/src/components/react/servers.tsx index 286cb30..76cdf66 100644 --- a/src/webui/src/components/react/servers.tsx +++ b/src/webui/src/components/react/servers.tsx @@ -1,202 +1,209 @@ import { api } from '@/api'; import { useEffect, Fragment } from 'react'; import Loader from '@/components/react/loader'; import Header from '@/components/react/header'; import { version } from '../../../package.json'; import { useArray, classNames, isVersionTooFar, startDuration } from '@/helpers'; const getStatus = (remote: string, status: string): string => { const badge = { updated: 'bg-emerald-700/40 text-emerald-400', behind: 'bg-gray-700/40 text-gray-400', critical: 'bg-red-700/40 text-red-400' }; if (remote == 'v0.0.0') { return badge['behind']; } else if (isVersionTooFar(version, remote.slice(1))) { return badge['behind']; } else if (remote == `v${version}`) { return badge['updated']; } else { return badge[status ?? 'critical']; } }; const skeleton = { os: { name: '' }, version: { pkg: 'v0.0.0', hash: 'none', build_date: 'none', target: '' }, daemon: { pid: 'none', running: false, uptime: 0, process_count: 'none' } }; const getServerIcon = (base: string, distro: string): string => { const distroList = [ 'Alpine', 'Arch', 'Amazon', 'Macos', 'Linux', 'Fedora', 'Debian', 'CentOS', 'NixOS', 'FreeBSD', + 'OpenBSD', 'OracleLinux', 'Pop', 'Raspbian', 'Redhat', 'Ubuntu' ]; const isDistroKnown = distroList.includes(distro); - return `${base}/distro/${isDistroKnown ? distro : 'Unknown'}.svg`; + return `${base}/assets/${isDistroKnown ? distro.toLowerCase() : 'unknown'}.svg`; }; const Index = (props: { base: string }) => { const items = useArray([]); const badge = { online: 'bg-emerald-400/10 text-emerald-400', offline: 'bg-red-500/10 text-red-500' }; async function fetch() { items.clear(); const metrics = await api.get(props.base + '/daemon/metrics').json(); items.push({ ...metrics, name: 'local' }); try { const servers = await api.get(props.base + '/daemon/servers').json(); await servers.forEach(async (name) => { api .get(props.base + `/remote/${name}/metrics`) .json() .then((metrics) => items.push({ ...metrics, name })) .catch(() => items.push({ ...skeleton, name })); }); } catch {} } useEffect(() => { fetch(); }, []); if (items.isEmpty()) { return ; } else { return (
{items.value.sort().map((server) => ( (window.location.href = props.base + '/status/' + server.name)}> ))}
Server Version Build Hash Process Id Count Status Uptime
- +
{server.name == 'local' ? 'Internal' : server.name}
{server.version.pkg}
{server.version.target} {server.version.build_date}
{server.version.hash.slice(0, 16)}
{server.daemon.pid} {server.daemon.process_count}
{server.daemon.uptime == 0 ? 'none' : startDuration(server.daemon.uptime, false)}
{server.daemon.running ? 'Online' : 'Offline'}
{server.daemon.uptime == 0 ? 'none' : startDuration(server.daemon.uptime, false)}
); } }; export default Index;